// 后端 API 封装

import { sendRequest } from './jsonrpc.mjs';

/**
 * @typedef ProcessVideoOptions 视频处理参数
 *
 * @property {string} resultsDir 视频输出目录（需已有）
 * @property {number} samplingRate 视频采样率
 * @property {number} alpha
 * @property {number} sigma
 * @property {'octave'|'halfOctave'|'smoothHalfOctave'|'quarterOctave'} pyrType
 * @property {number} videoScale 视频画面大小缩放倍率（画面调小可减少处理时间）
 */

/**
 * @typedef ProcessVideoResult 视频处理结果
 *
 * @property {string} outFile 视频输出文件名
 */

/**
 * 调用后端视频处理 API。
 *
 * @param {string} inFile 输入视频文件地址
 * @param {number} loCutoff 频率范围起始值
 * @param {number} hiCutoff 频率范围终止值
 * @param {ProcessVideoOptions} options 可选参数
 * @returns {Promise<ProcessVideoResult>}
 */
function processVideo(inFile, loCutoff, hiCutoff, options = {}) {
  options.inFile = inFile;
  options.loCutoff = loCutoff;
  options.hiCutoff = hiCutoff;
  return sendRequest('processVideo', options);
}

/* eslint-disable import/prefer-default-export */
export { processVideo };
